/**
 * 聊天消息接口定义
 */
import { SelectedTextInfo } from './text';

// 消息类型
export interface Message {
    id: string;
    text: string;
    isUser: boolean;
    timestamp: Date;
    isPinned?: boolean; // 标记消息是否被固定（不会被压缩）
    isStreaming?: boolean;
    isTypingIndicator?: boolean; // 新增标志
    isSelectedText?: boolean; // 新增标志
    isNew?: boolean; // 新消息标志，用于淡入动画
}

// AI聊天面板属性
export interface AIChatPanelProps {
    selectedText: string;
    selectionInfo?: SelectedTextInfo | null;
    onApplyAISuggestion: (suggestion: string) => void;
}

// Snackbar状态
export interface SnackbarState {
    open: boolean;
    message: string;
    severity: 'success' | 'error' | 'info' | 'warning';
}

// API消息类型
export interface ChatMessage {
    role: 'user' | 'assistant' | 'system';
    content: string;
}

// 保存的对话
export interface SavedConversation {
    id: string;
    title: string;
    timestamp: number;
    messages: Message[];
    historyMessages: ChatMessage[];
}

// 输出长度选项
export enum TokenLengthOption {
    SHORT = "短",
    MEDIUM = "中",
    LONG = "长"
}

// 各长度选项对应的最大token数量
export const TOKEN_LENGTH_VALUES = {
    [TokenLengthOption.SHORT]: 2000,
    [TokenLengthOption.MEDIUM]: 4000,
    [TokenLengthOption.LONG]: 8000
};

// 默认长度选项
export const DEFAULT_TOKEN_LENGTH = TokenLengthOption.MEDIUM;

// 添加配置选项
export const MAX_HISTORY_MESSAGES = 100; // 增加历史消息数量上限
export const MAX_CONTEXT_TOKENS = 32000; // 增加上下文令牌数上限，充分利用Deepseek的64K上下文窗口
export const MAX_OUTPUT_TOKENS = 8000; // 增加输出令牌数上限，利用Deepseek Beta API的8K最长输出
export const RECENT_TURNS_TO_KEEP = 20; // 增加完整保留的对话轮数
export const MAX_TOKENS_PER_MESSAGE = 1000; // 单条消息的最大词元估计 